﻿namespace BM.Tools.WebControls.MForm.Controls.Helper.EventValidation
{
    using System;
    using System.Runtime.Serialization;

    /// <summary>
    /// An exception in case of MForm framework problems with ASP.NET event validation technique.
    /// </summary>
    [Serializable]
    public class MFormEventValidationException : Exception
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="MFormEventValidationException"/> class.         
        /// </summary>
        public MFormEventValidationException()
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MFormEventValidationException"/> class.         
        /// </summary>
        /// <param name="message">
        /// The message that describes the error. 
        /// </param>
        public MFormEventValidationException(string message) : base(message)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MFormEventValidationException"/> class.         
        /// </summary>
        /// <param name="message">
        /// The error message that explains the reason for the exception. 
        /// </param>
        /// <param name="innerException">
        /// The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. 
        /// </param>
        public MFormEventValidationException(string message, Exception innerException) : base(message, innerException)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MFormEventValidationException"/> class.         
        /// </summary>
        /// <param name="info">
        /// The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown. 
        /// </param>
        /// <param name="context">
        /// The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination. 
        /// </param>
        /// <exception cref="T:System.Runtime.Serialization.SerializationException">
        /// The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). 
        /// </exception>
        /// <exception cref="T:System.ArgumentNullException">
        /// The info parameter is null. 
        /// </exception>
        protected MFormEventValidationException(SerializationInfo info, StreamingContext context) : base(info, context)
        {
        }
    }
}
